The present invention relates generally to the data processing field, and more particularly, relates to a method and apparatus for implementing enhanced performance caching for path names.
In the IBM AS/400 integrated file system (IFS), every object is abstracted into an internal control block called a vnode. There is an entire architecture based on operations that apply to a given vnode. A vnode is allocated whenever an object in the IFS is used. Vnodes that are in use are considered referenced and the referenced vnodes remain in storage for quick access.
An object in the IFS is known by its path name, which is of the form a/b/c. In this hierarchical path name structure, / is the root directory and c is an object contained in directory b and b is an object contained in directory a and a is an object contained in the root directory. Each component piece of a path name is represented by a separate vnode. Any operation done on object c must first traverse the entire pathname in order to access the vnode for c. This typically describes a normal forward path name resolution.
Similarly, there are several system operations that require a path name construction that operates in reverse order from path name resolution. Path name construction may be understood as follows.
Given a vnode, the entire (absolute) path name must be found that leads to the vnode. For example, given the vnode for C, the goal is to construct the pathname /a/b/c. This is a time consuming operation, because the vnode for an object does not contain specific information about its parent, since a given object may have multiple parents. Therefore in order to construct a full absolute path (one that starts with /), an immediate parent must be found for the object in question, that object""s component name is stored and this process repeated until the root directory / is reached. Each time a parent is found, a new vnode for that parent object must be built. Building a vnode is very expensive and coupled with the reverse traversal, this entire operation (path name construction) is time and memory expensive.
This impacts a number of common functions, such as Auditing, Journaling, Reclaim, SAV/RST, GETCURDIR, and Qp0IGetPathFromFileID( ).
A need exists for an improved method and apparatus for enhanced performance caching for path names.
A principal object of the present invention is to provide a method and apparatus for enhanced performance caching for path names. Other important objects of the present invention are to provide such method and apparatus for enhanced performance caching for path names substantially without negative effect and that overcome many of the disadvantages of prior art arrangements.
In brief, a method and apparatus are provided for enhanced performance caching for path names. A vnode is built for a root directory and a path name is stored in a path cache for the vnode for the root directory. A second vnode is built for a second directory and a path name is stored in a path cache for the second vnode.
In accordance with features of the invention, when a next vnode is built for a next directory, then a path name is stored in a path cache for the next vnode. For a given vnode, the path name includes an entire path name that leads to the vnode. A given vnode is enabled to return its entire path name in one step, without reverse traversal.